<?php 
/** 
 * 调整数组顺序使奇数位于偶数前面
 * 输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有的奇数位于数组的前半部分，所有的偶数位于数组的后半部分，
 * 扩展(并保证奇数和奇数，偶数和偶数之间的相对位置不变。)
 * 解法，一遍快排
 * 扩展解法：
 * 一：冒泡
 * 二：
      1.要想保证原有次序，则只能顺次移动或相邻交换。
 *    2.i从左向右遍历，找到第一个偶数。
 *    3.j从i+1开始向后找，直到找到第一个奇数。
 *    4.将[i,...,j-1]的元素整体后移一位，最后将找到的奇数放入i位置，然后i++。
 *    5.終止條件：j向後遍歷查找失敗。
 * 三：
 * 	 定义一个空数组
 */
/** 
 * [reOrderArray description]
 * 一边快速排序
 */
function reOrderArray($array)
{
	if (empty($array)) {
		return [];
	}
    $l = 0;
    $r = count($array) - 1;
    while ($l < $r) {
    	while ($l < $r && ($array[$l]%2 != 0 )) {
    		$l++;
    	}
    	while ($l < $r && ($array[$r]%2 == 0)) {
            $r--;
    	}
    	if ($l < $r) {
    		$temp = $array[$l];
    		$array[$l] = $array[$r];
    		$array[$r] = $temp;
    	}
    }
    return $array;
}


/** 
 * [reOrderArray1 description]
 * @param  [type] $array [description]
 * @return [type]        [description]
 * 冒泡
 */
function reOrderArray1($array)
{
	if (empty($array)) {
		return [];
	}
    $count = count($array);
    for ($i = 0; $i < $count - 1; $i++) {
    	for ($j = 0;$j < $count-$i-1; $j++) {
    		if ($array[$j] %2==0 &&($array[$j + 1] %2!=0)) {
    			$temp = $array[$j+1];
    			$array[$j+1] = $array[$j];
    			$array[$j] = $temp;
    		}
    	}
    }
    
    return $array;
}


$arr = [1,3,6,5,9,7,11,56,8];
print_r(reOrderArray1($arr)) ;